import { BASE_URL } from './config';

// 默认图片路径 - 使用小程序中实际存在的本地路径
const defaultAvatar = '/static/logo.png'; // 使用已存在的logo作为默认头像
const defaultCover = '/static/logo.png';  // 使用已存在的logo作为默认封面
const defaultAlbum = '/static/logo.png';  // 使用已存在的logo作为默认相册图片

/**
 * 解析图片JSON字符串或数组
 * @param {string | array} imagesJson - 图片数据
 * @returns {array} 图片数组
 */
const parseImages = (imagesJson) => {
  if (!imagesJson) return [];
  
  try {
    if (typeof imagesJson === 'string') {
      return JSON.parse(imagesJson);
    }
    return Array.isArray(imagesJson) ? imagesJson : [];
  } catch (error) {
    console.error('解析图片数据失败:', error);
    return [];
  }
};

/**
 * 安全地构建一个完整的图片URL
 * @param {string | null | undefined} path - 后端返回的图片路径
 * @param {'avatar' | 'cover' | 'photo'} type - 图片类型，用于决定使用哪个默认图
 * @returns {string} 一个完整的、可访问的图片URL
 */
const safeImageUrl = (path, type = 'photo') => {
  if (!path) {
    if (type === 'avatar') return defaultAvatar;
    if (type === 'cover') return defaultCover;
    return defaultCover; // 默认为封面图
  }

  // 1. 如果已经是完整URL，直接返回
  if (path.startsWith('http')) {
    return path;
  }

  // 2. 如果不是以 / 开头，补上
  const relativePath = path.startsWith('/') ? path : '/' + path;

  // 3. 拼接基础URL
  return BASE_URL + relativePath;
};

/**
 * 构建图片URL - 兼容多种输入格式
 * @param {string | object} imagePath - 图片路径或包含图片信息的对象
 * @returns {string} 完整的图片URL
 */
const buildImageUrl = (imagePath) => {
  // 如果是对象，尝试提取url或fileUrl属性
  if (typeof imagePath === 'object' && imagePath !== null) {
    const url = imagePath.url || imagePath.fileUrl || imagePath.file_url;
    return safeImageUrl(url);
  }
  
  // 如果是字符串，直接处理
  return safeImageUrl(imagePath);
};

const imageHelper = {
  safeImageUrl,
  buildImageUrl,
  parseImages, // 添加缺失的方法
  getDefaultAvatar: () => defaultAvatar,
  getDefaultCover: () => defaultCover,
  getDefaultAlbum: () => defaultAlbum  // 添加缺失的方法
};

export default imageHelper; 